package system.student.util;

import java.util.regex.Pattern;

public class EmailUtil {
    // 正则表达式模式（符合 RFC 5322 标准的简化版，覆盖主流邮箱格式）
    // 本地部分：允许字母、数字、点、下划线、百分号、加号、减号（不能以点开头/结尾，不能连续点）
    // 域名部分：允许字母、数字、点、减号（不能以点开头/结尾，顶级域名至少2位）
    private static final String EMAIL_REGEX =
            "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@" +  // 本地部分（支持点分隔，如 user.name）
                    "(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";             // 域名部分（如 example.com 或 mail.sub.cn）

    // 编译正则表达式（提高性能，避免重复编译）
    private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX);

    /**
     * 验证邮箱格式是否合法
     * @param email 待验证的邮箱地址（允许为 null）
     * @return 合法返回 true，否则返回 false
     */
    public static boolean isValid(String email) {
        // 处理空值或空字符串
        if (email == null || email.trim().isEmpty()) {
            return false;
        }
        // 正则匹配（忽略大小写）
        return EMAIL_PATTERN.matcher(email).matches();
    }
}
